home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- from Tkinter import *
- from EditorWindow import EditorWindow
- import re
- import tkMessageBox
- import IOBinding
-
- class OutputWindow(EditorWindow):
- '''An editor window that can serve as an output file.
-
- Also the future base class for the Python shell window.
- This class has no input facilities.
- '''
-
- def __init__(self, *args):
- EditorWindow.__init__(self, *args)
- self.text.bind('<<goto-file-line>>', self.goto_file_line)
-
-
- def ispythonsource(self, filename):
- return 0
-
-
- def short_title(self):
- return 'Output'
-
-
- def maybesave(self):
- if self.get_saved():
- return 'yes'
- else:
- return 'no'
-
-
- def write(self, s, tags = (), mark = 'insert'):
- if isinstance(s, str):
-
- try:
- s = unicode(s, IOBinding.encoding)
- except UnicodeError:
- pass
- except:
- None<EXCEPTION MATCH>UnicodeError
-
-
- None<EXCEPTION MATCH>UnicodeError
- self.text.insert(mark, s, tags)
- self.text.see(mark)
- self.text.update()
-
-
- def writelines(self, l):
- map(self.write, l)
-
-
- def flush(self):
- pass
-
- rmenu_specs = [
- ('Go to file/line', '<<goto-file-line>>')]
- file_line_pats = [
- 'file "([^"]*)", line (\\d+)',
- '([^\\s]+)\\((\\d+)\\)',
- '([^\\s]+):\\s*(\\d+):']
- file_line_progs = None
-
- def goto_file_line(self, event = None):
- if self.file_line_progs is None:
- l = []
- for pat in self.file_line_pats:
- l.append(re.compile(pat, re.IGNORECASE))
-
- self.file_line_progs = l
-
- line = self.text.get('insert linestart', 'insert lineend')
- result = self._file_line_helper(line)
- if not result:
- line = self.text.get('insert -1line linestart', 'insert -1line lineend')
- result = self._file_line_helper(line)
- if not result:
- tkMessageBox.showerror('No special line', "The line you point at doesn't look like a valid file name followed by a line number.", master = self.text)
- return None
-
-
- (filename, lineno) = result
- edit = self.flist.open(filename)
- edit.gotoline(lineno)
-
-
- def _file_line_helper(self, line):
- for prog in self.file_line_progs:
- m = prog.search(line)
- if m:
- break
- continue
- else:
- return None
- (filename, lineno) = m.group(1, 2)
-
- try:
- f = open(filename, 'r')
- f.close()
- except IOError:
- return None
-
-
- try:
- return (filename, int(lineno))
- except TypeError:
- return None
-
-
-
-
- class OnDemandOutputWindow:
- tagdefs = {
- 'stdout': {
- 'foreground': 'blue' },
- 'stderr': {
- 'foreground': '#007700' } }
-
- def __init__(self, flist):
- self.flist = flist
- self.owin = None
-
-
- def write(self, s, tags, mark):
- if not self.owin:
- self.setup()
-
- self.owin.write(s, tags, mark)
-
-
- def setup(self):
- self.owin = owin = OutputWindow(self.flist)
- text = owin.text
- for tag, cnf in self.tagdefs.items():
- if cnf:
- text.tag_configure(tag, **cnf)
- continue
-
- text.tag_raise('sel')
- self.write = self.owin.write
-
-
-